/*
Copyright (c) [2019年5月1日] [吴超]
[MBT_studio] is licensed under Mulan PSL v2.
You can use this software according to the terms and conditions of the Mulan PSL v2.
You may obtain a copy of Mulan PSL v2 at:
		 http://license.coscl.org.cn/MulanPSL2
THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
See the Mulan PSL v2 for more details.
*/
#pragma once


#define BT_THREADSAFE 1

#include <向量.h>

//#define path D:/U/Project/Tool_Lib/bullet/include/


#include "btBulletDynamicsCommon.h"
#include "btBulletCollisionCommon.h"			  
#include "BulletDynamics/Dynamics/btSimulationIslandManagerMt.h"  
#include "BulletDynamics/Dynamics/btDiscreteDynamicsWorldMt.h"
#include "BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolverMt.h"
#include "BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h"
#include "BulletDynamics/ConstraintSolver/btNNCGConstraintSolver.h"
#include "BulletDynamics/MLCPSolvers/btMLCPSolver.h"
#include "BulletDynamics/MLCPSolvers/btSolveProjectedGaussSeidel.h"
#include "BulletDynamics/MLCPSolvers/btDantzigSolver.h"
#include "BulletDynamics/MLCPSolvers/btLemkeSolver.h"
#include "Bullet3Collision/BroadPhaseCollision/b3BroadphaseCallback.h"
#include "LinearMath/btAlignedObjectArray.h"
#include "LinearMath/btPoolAllocator.h"
#include "btBulletCollisionCommon.h"
#include "BulletCollision/CollisionDispatch/btCollisionDispatcherMt.h"
#include "BulletCollision/NarrowPhaseCollision/btRaycastCallback.h"










enum SolverType
{
	SOLVER_TYPE_SEQUENTIAL_IMPULSE,
	SOLVER_TYPE_SEQUENTIAL_IMPULSE_MT,
	SOLVER_TYPE_NNCG,
	SOLVER_TYPE_MLCP_PGS,
	SOLVER_TYPE_MLCP_DANTZIG,
	SOLVER_TYPE_MLCP_LEMKE,

	SOLVER_TYPE_COUNT
};



struct S_Bullet物理引擎核心 {
	uint32	m_线程数;


	S_Bullet物理引擎核心();
	~S_Bullet物理引擎核心();



	btDefaultCollisionConfiguration* m_collisionConfiguration;
	btCollisionDispatcher*			m_调度;
	//btCollisionConfiguration*			m_调度;
	btDbvtBroadphase* m_broadphase;
	SolverType						m_解算方式;
	//btConstraintSolverPoolMt*		m_约束解算器;
	btConstraintSolver*				m_约束解算器;

	std::vector<btDiscreteDynamicsWorld*>	m_物理域空间;


};














